MENTAL, UN LENGUAJE
AUTO-REFLEXIVO

“Mediante la reflexión se adquieren las ideas generales” (Locke)

“La reflexión es el instrumento de la filosofía” (Hegel)

“La reflexión es la vía para llegar a los conceptos” (Kant)

“La reflexividad es la verdadera esencia de la conciencia” (Frederick Peters)



La Reflexión

Existen muchas teorías sobre la reflexión, un término derivado del latín reflexio. Destacamos las siguientes:
Reflexión vs. Reflexividad

Hay que distinguir entre reflexión y reflexividad. La reflexividad es un mecanismo genérico que aparece en muchos dominios y que consiste en una relación circular de una entidad consigo misma o con su entorno. Una entidad está interactuando continuamiente con su medio y ambos se reflejan mutuamente. La reflexión (mental) es un tipo de reflexividad entre el sujeto y el medio con el que interacciona.

Un sistema es auto-reflexivo si es autosuficiente en el proceso de reflexión. La auto-reflexión es un mecanismo que utiliza la naturaleza para optimizar al máximo sus recursos. El universo es auto-reflexivo. La mente, reflejo del universo, considerada en sí misma, es también auto-reflexiva.


Órdenes de reflexividad

Cuando un sujeto recibe datos o información, percibe o experimenta, inmediatamente se produce un proceso reflexivo, pues el sujeto intenta interpretarlo, es decir, asignarle un significado. La mente siempre va desde lo particular a lo general, tratando de encajar una experiencia en una categoría conceptual. Cuanto mayor es la novedad del input recibido, mayor es el proceso reflexivo. Esto es reflexividad de primer orden. Si reflexiona posteriormente sobre su reflexión, entonces es una reflexión de segundo orden. Y así sucesivamente.

Un termostato es un sistema reflexivo de orden 1, pues ajusta automáticamente la temperatura según una temperatura de referencia t, de acuerdo con una regla. Si se cambia la temperatura de referencia t, el sistema que lo hace sería un sistema reflexivo de orden 2.


Conocimiento directo y reflexivo

El conocimiento directo es automático, donde no hay distinción entre sujeto y entorno, y por consiguiente no hay reflexión. El conocimiento es reflexivo cuando el sujeto se enfrenta a un nuevo problema que le produce un cierto desequilibrio y tiene que adaptar o modificar sus esquemas conceptuales para lograr un nuevo equilibrio.

En la Grecia clásica se distinguía entre conocimiento doxa (conocimiento vulgar u ordinario, no sometido a la reflexión crítica) y episteme (el conocimiento elaborado con rigor).


Reflexión Conceptual

La reflexión conceptual es aplicar un concepto sobre sí mismo. El resultado es un concepto de orden 2. Aplicando de nuevo el concepto sobre el concepto de orden 2, obtenemos un concepto de orden 3, etc. Algunos ejemplos de conceptos de orden 2 son: Hay que distinguir entre reflexión conceptual y conceptos autológicos. Los conceptos que pueden aplicarse a sí mismos se denominan “autológicos” y los que no pueden aplicarse a sí mismos se llaman “heterológicos”. Normalmente estos conceptos son adjetivos. Ejemplos de conceptos autológicos son “polisílabo” (es una palabra polisílaba) y “esdrújula” (es una palabra esdrújula). Ejemplos de conceptos heterológicos son: “azul” (no es azul), “redondo” (no es redondo) y “alemán” (no es alemán).


Niveles reflexivos

En la reflexión conceptual existen dos niveles:
  1. Base. Corresponde al concepto inicial o de primer orden.

  2. Meta. Corresponde al concepto de segundo orden.

    Ejemplos: meta-lenguaje, meta-matemática, meta-lógica, meta-datos, meta-información, meta-computación, meta-programación, meta-objetos, meta-reglas, meta-procesos, etc.
El prefijo “meta” significa “más allá”. A nivel filosófico se identifica con la trascendencia desde la aparición de la Metafísica de Aristóteles. A nivel conceptual es el primer nivel de reflexión.

Evidentemente, puede haber más niveles, pudiéndose edificar la llamada “torre reflexiva”, con los niveles base, meta, meta-meta, meta-meta-meta, etc., en el que cada nivel o capa conceptual hace referencia al nivel inmediato inferior, con conceptos de orden 1, 2, 3, etc.

Torre reflexiva


Sistemas Reflexivos

Un sistema reflexivo es un sistema con los niveles base y meta.
Variantes de sistemas reflexivos
Cinta de
Moebius
Ouroboros

Lo ideal es que exista unificación entre base y todos los posibles niveles meta, donde todos se puedan comunicar entre sí, sin restricciones. Por lo tanto, los sistemas más interesantes son los auto-reflexivos.


Reflexión Lingüística


A nivel lingüístico, la reflexividad es la capacidad del lenguaje de referirse a sí mismo. Todo lenguaje natural tiene una dimensión reflexiva, por lo que la capacidad metalingüística es universal de todos los lenguajes naturales. Y es una capacidad específica del ser humano.

En lógica y filosofía del lenguaje, un metalenguaje es un lenguaje que se usa para hablar de otro lenguaje (denominado “lenguaje objeto”). El término “metalenguaje” fue introducido por Alfred Tarski en los años 1930s como solución a las paradojas e inconsistencias semánticas del lenguaje natural, como la paradoja del mentiroso (“Esta oración es falsa”). Distinguía entre lenguaje objeto y metalenguaje. El lenguaje objeto es el lenguaje base. El metalenguaje es el lenguaje que habla del lenguaje objeto. Para distinguir ambos tipos de lenguajes, Tarski encerraba entre comillas simples (apóstrofos) las frases del lenguaje objeto. Por ejemplo, “La frase ’la nieve es blanca’ es verdadera si la nieve es blanca” es una sentencia reflexiva porque habla del propio lenguaje. El predicado “verdadera” pertenece al metalenguaje. Según Tarski, ningún lenguaje puede contener su propio predicado de verdad.

Bertrand Russell propuso en su introducción al Tractatus de Wittgenstein la necesidad de establecer una jerarquía de lenguajes, basada en su “teoría de tipos”, de tal manera que un lenguaje solo puede referirse a los lenguajes de nivel inferior. Un lenguaje no puede referirse al propio lenguaje sin caer en inconsistencias o paradojas lógicas.


Lenguajes de Programación Reflexivos

Un lenguaje de programación reflexivo es un lenguaje que dispone de recursos lingüísticos para el nivel base y para el lenguaje meta. La reflexión puede ser explícita o implícita: Un lenguaje de programación auto-reflexivo es el que puede hacer referencia a sí mismo, es decir, puede hacer referencia a los propios recursos del lenguaje con los mismos recursos del lenguaje. Los niveles base y meta se confunden. Con un lenguaje auto-reflexivo podemos construir sistemas auto-reflexivos.

Los ordenadores no son conscientes, no “saben” lo que hacen, actúan mecánicamente en función del programa previamente diseñado. Los programas de ordenador no tienen conciencia, pero pueden actuar con mecanismos reflexivos si el lenguaje de programación dispone de esos recursos reflexivos.


Lenguajes y sistemas meta-circulares

Un lenguaje meta-circular es un lenguaje auto-reflexivo que puede ampliarse con el propio lenguaje. Un sistema meta-circular es un sistema que puede ampliarse mediante sus propios recursos. Por ejemplo: El término “meta-circular” fue utilizado por primera vez por John McCarthy en una implementación del lenguaje Lisp en Lisp.


Reificación y reflexión

La reificación está muy relacionada con la reflexión, pues la reificación es un tipo de reflexión.

En el contexto de los lenguajes de programación, la reificación es un proceso por el cual algo que estaba implícito o inexpresado en tiempo de ejecución se formula explícitamente y queda disponible para su manejo por el lenguaje como dato. Hay dos tipos: El mecanismo de reificación puede estar contemplada en el lenguaje de programación y utilizarse en el diseño del programa.


Lenguajes reflexivos

Los lenguajes que soportan reflexión son principalmente los de inteligencia artificial. Lenguajes con diferentes propiedades reflexivas son, por ejemplo: El problema con estos lenguajes es doble:
  1. La reflexión va asociada normalmente a un solo paradigma, es decir, la reflexión no es genérica. Dependiendo del tipo de paradigma utilizado, hay meta-programas, meta-funciones, meta-reglas, meta-objetos, meta-procedimientos, etc.

  2. No hay auto-reflexión, es decir, los niveles base y meta están claramente diferenciados.
Algunos lenguajes orientados a objetos incluyen en el nivel meta un solo meta-objeto monolítico, con la consiguiente complejidad de utilización. Otros permiten múltiples meta-objetos, pero necesitan un protocolo a nivel meta (Meta-Object Protocol): un conjunto de reglas para manejar y comunicar los meta-objetos. Normalmente están limitados a reflexión sobre valores de variables.

En algunos lenguajes de programación orientada a objetos, como Java, la reflexión permite la introspección en tiempo de ejecución de clases, interfaces, atributos y métodos, sin conocer los nombres.


Lenguajes homoicónicos

Un lenguaje homoicónico −del griego homo, igual, e icon, representación− es aquel en el que la representación del código es la misma que la de los datos, es decir, la sintaxis y la semántica es la misma. Este calificativo fue usado por primera ve por Alan Kay en su tesis doctoral de 1968. Esta propiedad está relacionada con la conciencia, con la unión de opuestos, en este caso, datos y código.

Un ejemplo de lenguaje homoicónico es Lisp, que utiliza la lista como único sistema para representación del código y de los datos. Las listas pueden estar anidadas.

Otros lenguajes que se consideran homoicónicos son: Curl, Elixir, Io, Ioke, Julia, Mathematica, Prolog, Rebol, Red, Snobol, Tcl, Xslt, Refal y Wolfram.

Los lenguajes que siguen la arquitectura von Neumann son homoicónicos, pues el código se almacena en memoria y puede tratarse como dato. Precisamente fue esta idea, la de almacenar el código en memoria, el gran motor del desarrollo de la informática en general y de los lenguajes de programación en particular.

Las ventajas de un lenguaje homoicónicos son muchas:
Ventajas de la reflexión en programación

El mecanismo reflexivo en programación proporciona enormes ventajas. Podemos destacar las siguientes: En definitiva, la reflexión en programación permite relacionar e integrar temas o áreas tan dispares como sistemas operativos, definición de lenguajes, compiladores e intérpretes, depuración de programas, meta-programación, protección contra ataques externos, etc. Además, por la posibilidad de implementar diferentes paradigmas de programación, se considera como un nuevo paradigma de programación: la programación orientada a reflexiones (reflection-oriented programming).


Auto-Reflexión en MENTAL


Adenda

Reflexión y fundamentación

La reflexión ha jugado un importante papel en las teorías fundamentacionalistas de la matemática y de la informática, pues han ayudado a revelar inconsistencias y demostrar propiedades. Hay tres casos históricos:
  1. En 1901, Russell demostró que la propuesta de Frege de fundamentar la teoría de conjuntos en la lógica no tenía sentido, al descubrir una inconsistencia con la expresión autoreferenciada siguiente: “¿El conjunto de los conjuntos que no son miembros de sí mismos, es miembro de sí mismo? Tras este descubrimiento, para eludir este problema, la teoría de conjuntos tuvo que formularse de manera axiomática.

  2. En 1931, Gödel demostró la incompletud de los sistemas axiomáticos formales que formalizan la aritmética. Utilizó la expresión auto-referenciada “Esta sentencia es indemostrable”.

  3. La máquina de Turing Universal es una máquina U que tiene como entrada una máquina de Turing concreta A (que codifica un algoritmo) con sus datos. Turing demostró que el problema de la parada de una máquina de Turing Universal es incomputable, es decir, no existe un meta-algoritmo H capaz de determinar si un algoritmo concreto A terminará con un resultado. Para ello utilizó la expresión auto-referenciada siguiente: ¿Se detiene H con el dato de entrada H?.

Aplicaciones de la reflexividad
Alan Kay, el visionario

Alan Kay (1940-), inventor el término “homoicónico”, es un visionario. Inventó la programación orientada a objetos con el lenguaje de programación SmallTalk. Concibió el ordenador personal tipo libro (lo que hoy es un ordenador portátil o una tableta) que denominó Dynabook, basado en el paradigma de los objetos. Inventó una interfaz gráfica de usuario basada en la metáfora del escritorio. Eterno buscador de lo simple y funcional, intentó que el lenguaje de programación orientado a objetos fuera un modelo de la mente humana. Kay predijo que algún día todos los usuarios serían a la vez programadores.


Bibliografía